home *** CD-ROM | disk | FTP | other *** search
/ .net 2002 March / DotNetMagazine-Issue107-Coverdisc-NET107-02-03-PCMac.bin / pc / PC Software / free_browsing / DavesQckSearchDbar3-14 / dqsd.exe / version.js < prev    next >
Text File  |  2002-09-10  |  5KB  |  149 lines

  1. function versionCheck()
  2. {
  3.   var bSuccess = true;
  4.   var testObject;
  5.  
  6.   // First, see if we can create the object at all
  7.   try
  8.   {
  9.     testObject = new ActiveXObject("DQSDTools.Launcher");
  10.   }
  11.   catch(e)
  12.   {
  13.     alert("The DQSD helper DLL is not correctly installed");
  14.     bSuccess = false;
  15.   }
  16.  
  17.   // Try a version query on it
  18.   if(bSuccess)
  19.   {
  20.     try
  21.     {
  22.       // The DLL version has to be great than or equal to
  23.       // this number
  24.       if(!testObject.VersionIsCorrect(3,1,0,1))
  25.       {
  26.          alert("The DQSD helper DLL is out of date.\nPlease reboot and run the setup program again.");
  27.          bSuccess = false;
  28.       }
  29.     }
  30.     catch(e)
  31.     {
  32.       alert("The DQSD helper DLL version couldn't be checked (error '" + e.description + "').\nPlease reboot and run the setup program again.");
  33.       bSuccess = false;
  34.     }
  35.   }
  36.   testObject = null;
  37.  
  38.  
  39.   return bSuccess;
  40. }
  41.  
  42. // Check for the correct ActiveX DLL version
  43. if(!versionCheck())
  44. {
  45.   // This is not a nice thing to do, but does reinforce the fact that you
  46.   // can't use the bar like it is
  47.   // Unfortunately, you can't do a toolbar refresh to recover from this
  48.   // so it might not be a great idea
  49.   window.close();
  50. }
  51.  
  52. function checkWebForUpdateNotifyAll()
  53. {
  54.   checkWebForUpdate(false)
  55. }
  56.  
  57. function checkWebForUpdate()
  58. {
  59.   var quiet = true;
  60.   if ( arguments.length )
  61.   {
  62.     var quiet = arguments[0];
  63.   }
  64.  
  65.   if ( quiet && ( typeof checkForUpdate == 'undefined' || !checkForUpdate ) )
  66.     return;
  67.     
  68.   checkForUpdate = false;  // only display once per session
  69.  
  70.   try
  71.   {
  72.     var rversion = getVersionFromVersionFile( "http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/dqsd/dqsd/version.xml?content-type=text/xml" );
  73.     var lversion = getVersionFromVersionFile( "version.xml" );
  74.  
  75.     // If there's a later version and the user wants to be notified of it, or
  76.     // there's a later version and there was an explicit update query, then show them
  77.     // what's available
  78.     if ( ( versioncmp( rversion, lversion ) > 0 ) && ( notifyUser( rversion ) || !quiet ) )
  79.     {
  80.       window.showModalDialog("versiondialog.htm", { lversion:lversion, rversion:rversion }, "dialogHeight: 150px; dialogWidth: 300px; dialogTop: " + (screen.height / 2 - 75) + "px; dialogLeft: " + (screen.width / 2 - 150) + "px; edge: Raised; center: Yes; help: No; resizable: Yes; status: No; scroll: No;");
  81.     }
  82.     else if ( !quiet )
  83.     {
  84.       rversion.htmlDescription = "You are using the latest version.<br/>For more details visit <a tabindex=-1 href='http://www.dqsd.net' onclick='window.close();'>www.dqsd.net</a>."
  85.       window.showModalDialog("versiondialog.htm", { lversion:lversion, rversion:rversion }, "dialogHeight: 100px; dialogWidth: 300px; dialogTop: " + (screen.height / 2 - 50) + "px; dialogLeft: " + (screen.width / 2 - 150) + "px; edge: Raised; center: Yes; help: No; resizable: Yes; status: No; scroll: No;");
  86.     }
  87.   }
  88.   catch(e)
  89.   {
  90.     if ( !quiet )
  91.       alert("Unable to check for update.  Check your internet connection.");
  92.   }
  93. }
  94.  
  95. function notifyUser( rversion )
  96. {
  97.   return ( checkForUpdateTypes.search( new RegExp("\\b" + rversion.type + "\\b", "i" ) ) >= 0 );
  98. }
  99.  
  100. function getVersionFromVersionFile( versionXML )
  101. {
  102.   var version = null;
  103.  
  104.   var msxml = getMSXMLDOMDocumentInstance();
  105.   msxml.async = false;
  106.   if ( msxml.load( versionXML ) )
  107.   {
  108.     version = getVersion( msxml.documentElement );
  109.   }
  110.  
  111.   return version;
  112. }
  113.  
  114. function getVersion( xmldom )
  115. {
  116.   var version = new Object();
  117.   version.majorHi = parseInt( xmldom.selectSingleNode( "/dqsd_version_info/version/majorhi" ).text );
  118.   version.majorLo = parseInt( xmldom.selectSingleNode( "/dqsd_version_info/version/majorlo" ).text );
  119.   version.minorHi = parseInt( xmldom.selectSingleNode( "/dqsd_version_info/version/minorhi" ).text );
  120.   version.minorLo = parseInt( xmldom.selectSingleNode( "/dqsd_version_info/version/minorlo" ).text );
  121.   version.htmlDescription = xmldom.selectSingleNode( "/dqsd_version_info/html_description" ).xml;
  122.   version.date = xmldom.selectSingleNode( "/dqsd_version_info/date" ).text;
  123.   version.type = xmldom.selectSingleNode( "/dqsd_version_info/type" ).text;
  124.   return version;
  125. }
  126.  
  127. // returns 1 if v1 > v2; -1 if v1 < v2; 0 if equal
  128. function versioncmp( v1, v2 )
  129. {
  130.   if ( v1.majorHi > v2.majorHi )
  131.     return 1;
  132.   if ( v2.majorHi > v1.majorHi )
  133.     return -1;
  134.   if ( v1.majorLo > v2.majorLo )
  135.     return 1;
  136.   if ( v2.majorLo > v1.majorLo )
  137.     return -1;
  138.   if ( v1.minorHi > v2.minorHi )
  139.     return 1;
  140.   if ( v2.minorHi > v1.minorHi )
  141.     return -1;
  142.   if ( v1.minorLo > v2.minorLo )
  143.     return 1;
  144.   if ( v2.minorLo > v1.minorLo )
  145.     return -1;
  146.   
  147.   return 0; // equal
  148. }
  149.